package modelo;

import modelo.estrategias.EstrategiaBalaAlgo42;

import modelo.moviles.naves.Nave;

import java.util.*;

public class Flota {
	private LinkedList<Nave> flota;
	
	
	/* Constructor */
	public Flota(){
		this.flota =  new LinkedList<Nave>() ;
	}

	/* 	Agrega una nave a la flota */
	public void agregarNave(Nave nave){
		flota.add(nave);
	}

	/* Si ningun objeto de la flota es guia entonces deben huir. */
	public boolean debeHuir(){
		
		Iterator<Nave> it = flota.iterator();
		Nave naveGuia ;
		while (it.hasNext()) {
			naveGuia = it.next();
			if (naveGuia.esGuia() && naveGuia.noEstallo() ){					
				return false;
			}
		}	
		return true;
	}
	

	/* "Devuelve la flota" */
	public LinkedList<Nave> getFlota(){
		return flota;
	}
	
	/* "todos los elementos vuelan para atras." */
	public void huir(){
		Iterator<Nave> it = flota.iterator();
		Nave nave;
		while (it.hasNext()){
			nave = it.next();
			nave.setEstrategia(new EstrategiaBalaAlgo42());
			nave.setDebeDisparar(false);
		}		
	}
		
	/* "Remueve una nave de la flota" */
	public void removerNave( Nave nave){
		flota.remove(nave);
	}

}
